package fem2.enu;

/**
 * PETSc preconditioner type
 * 
 * @author hbui
 * 
 */
public enum PETScPrecondType {

	PCNONE("none"), //
	PCJACOBI("jacobi"), //
	PCSOR("sor"), //
	PCLU("lu"), //
	PCSHELL("shell"), //
	PCBJACOBI("bjacobi"), //
	PCMG("mg"), //
	PCEISENSTAT("eisenstat"), //
	PCILU("ilu"), //
	PCICC("icc"), //
	PCASM("asm"), //
	PCGASM("gasm"), //
	PCKSP("ksp"), //
	PCCOMPOSITE("composite"), //
	PCREDUNDANT("redundant"), //
	PCSPAI("spai"), //
	PCNN("nn"), //
	PCCHOLESKY("cholesky"), //
	PCPBJACOBI("pbjacobi"), //
	PCMAT("mat"), //
	PCHYPRE("hypre"), //
	PCPARMS("parms"), //
	PCFIELDSPLIT("fieldsplit"), //
	PCTFS("tfs"), //
	PCML("ml"), //
	PCPROMETHEUS("prometheus"), //
	PCGALERKIN("galerkin"), //
	PCEXOTIC("exotic"), //
	PCHMPI("hmpi"), //
	PCSUPPORTGRAPH("supportgraph"), //
	PCASA("asa"), //
	PCCP("cp"), //
	PCBFBT("bfbt"), //
	PCLSC("lsc"), //
	PCPYTHON("python"), //
	PCPFMG("pfmg"), //
	PCSYSPFMG("syspfmg"), //
	PCREDISTRIBUTE("redistribute"), //
	PCSVD("svd"), //
	PCGAMG("gamg"), //
	PCSACUSP("sacusp"), // /* these four run on NVIDIA GPUs using CUSP */
	PCSACUSPPOLY("sacusppoly"), //
	PCBICGSTABCUSP("bicgstabcusp"), //
	PCAINVCUSP("ainvcusp"), //
	PCBDDC("bddc")//
	;

	private String pcType;

	PETScPrecondType(String pcType) {
		this.pcType = pcType;
	}

	public String getName() {
		return this.pcType;
	}

}
